﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using CodeSaude.Domain.Entities;
using CodeSaude.Domain.Enums;

namespace CodeSaude.Application.ViewModels
{
    public class ProntuarioViewModel
    {
        public ProntuarioViewModel()
        {
            ListaProntuarioAvaliacao = new List<ProntuarioAvaliacao>();
            Prontuarios = new List<ProntuarioDTO>();
        }

        public int ProntuarioId { get; set; }

        [Display(Name = @"Especialidade")]
        [Required(ErrorMessage = @"Especialidade é obrigatóirio")]
        public int IdEspecialidade { get; set; }
        public Especialidade Especialidade { get; set; }

        public int? IdPessoa { get; set; }

        [Display(Name = @"Nome")]
        [Required(ErrorMessage = @"O Nome da pessoa é obrigatóirio")]
        public string NomePessoa { get; set; }

        [Display(Name = @"Idade")]
        public int? IdadePessoa { get; set; }

        public int? IdProfissional { get; set; }
        public int IdRisco { get; set; }

        [Display(Name = @"Prioridade")]
        [Required(ErrorMessage = @"Prioridade é obrigatóirio")]
        public int IdPrioridade { get; set; }

        public int? LocalCorrente { get; set; }

        [Display(Name = @"Destino")]
        public int? IdDestino { get; set; }

        public int IdGrupo { get; set; }

        [Display(Name = @"Atendimento")]
        public int OrdemAtendimento { get; set; }
        public string QueixaPrincipal { get; set; }
        public int? IdEscalaDor { get; set; }
        public int? IdClassificação { get; set; }
        public string Observacao { get; set; }
        public string Justificativa { get; set; }
        public int? FlagCondicao { get; set; }
        public int? FlagHistoricoFamiliar { get; set; }
        public int? FlagAntecedente { get; set; }
        public int? FlagMedicamento { get; set; }
        public int? FlagAlergia { get; set; }
        public int? FlagClassificacao { get; set; }
        public string NomeAcompanhante { get; set; }
        public string GrauParentescoAcompanhante { get; set; }
        public string TelefoneAcompanhante { get; set; }
        public int? Leito { get; set; }
        public int? IdLeito { get; set; }
        public int? SISReg { get; set; }
        public int? CodigoSaida { get; set; }
        public DateTime? DataSaida { get; set; }

        [Display(Name = @"Situação")]
        public int IdSituacao { get; set; }

        public DateTime? DataAtendimento { get; set; }
        public int? IdSituacaoAnterior { get; set; }
        public int? FlagRetorno { get; set; }
        public string CodigoPacienteBiosLab { get; set; }
        public int? Bloqueado { get; set; }
        public int? IdProfissionalAtd { get; set; }
        public DateTime? DataProfissionalAtd { get; set; }
        public int? IdProfissionalAnm { get; set; }
        public int? IdEspecialidadeAnm { get; set; }
        public DateTime? DataProfissionalAnm { get; set; }
        public int? IdProfissionalSai { get; set; }
        public DateTime? DataProfissionalSai { get; set; }
        public int? IdProfissionalAco { get; set; }
        public DateTime? DataProfissionalAco { get; set; }
        public int? IdEspecialidadeReg { get; set; }
        public int? IdProfissionalReg { get; set; }
        public DateTime? DataProfissionalReg { get; set; }
        public int? IdSetor { get; set; }
        public int? IdProfisionalReq { get; set; }
        public DateTime? DataProfissionalReq { get; set; }
        public int? IdProfissionalPrc { get; set; }
        public DateTime? DataProfissionalPrc { get; set; }
        public int? IdProfissionalEvl { get; set; }
        public DateTime? DataProfissionalEvl { get; set; }
        public int? IdProfissionalTrn { get; set; }
        public DateTime? DataProfissionalTrn { get; set; }
        public int? IdEspecialidadeCls { get; set; }
        public int? IdProfissionalCls { get; set; }
        public DateTime? DataProfissionalCls { get; set; }
        public int? IdProfissionalFim { get; set; }
        public DateTime? DataProfissionalFim { get; set; }
        public int? AtendimentoAvulso { get; set; }
        public long? IdMotivoReaberetura { get; set; }

        public string Situacao { get; set; }
        public string Destino { get; set; }
        public string Prioridade { get; set; }

        public IEnumerable<SelectListItem> ListaSituacoes { get; set; }
        public IEnumerable<SelectListItem> ListaEspecialidades { get; set; }
        public IEnumerable<SelectListItem> ListaPrioridades { get; set; }
        public IEnumerable<SelectListItem> ListaDestinos { get; set; }

        //public PrioridadeEnum Prioridade { get; set; }

        public string ClasseCssLabelSituacao
        {
            get
            {
                var cssClassLabel = string.Empty;
                switch (IdSituacao)
                {
                    case (int)SituacaoEnum.Ativo:
                        cssClassLabel = "label sitAtivo";
                        break;
                    case (int)SituacaoEnum.Inativo:
                        cssClassLabel = "label sitInativo";
                        break;
                }

                return cssClassLabel;
            }
        }

        public virtual ICollection<ProntuarioAvaliacao> ListaProntuarioAvaliacao { get; set; }
        public ICollection<ProntuarioDTO> Prontuarios { get; set; }
        public ProntuarioAvaliacao ProntuarioAvaliacao { get; set; }

    }
}
